package com.internetCafes.spms.web.customer.service.user;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.internetCafes.spms.web.customer.entity.user.EntUserInfo;
import com.internetCafes.spms.web.customer.model.user.*;
import com.internetCafes.spms.web.sys.model.UserInfo;

import java.util.List;

public interface IEntUserInfoService extends IService<EntUserInfo> {

    /**
     * 判断 userId 是否是对应 管理员信息userInfo 的下级用户id
     *
     * @param userInfo 用户用户信息
     * @param userId   需要判断的
     * @return true/false
     */
    boolean isLowerLevelUserIdListOfManagerUser(List<Long> userId, UserInfo userInfo);

    /**
     * 判断 userId 是否是对应 管理员信息userInfo 的下级用户id
     *
     * @param userInfo 用户用户信息
     * @param userId   需要判断的
     * @return true/false
     */
    boolean isLowerLevelUserIdOfManagerUser(Long userId, UserInfo userInfo);

    /**
     * 无租户过滤获取企业用户id
     *
     * @param entUserInfoDo 请求参数
     * @return 用户列表
     */
    List<EntUserInfoPo> listPoNoTenantId(EntUserInfoDo entUserInfoDo);

    /**
     * 统计用户扩展信息
     *
     * @param userIdList 用户id列表
     */
    Integer countUserExtendInfoByIds(List<Long> userIdList);

    /**
     * 用户列表
     */
    List<UserPo> userPoList(UserDo userDo);

    /**
     * 用户员工信息列表
     */
    List<EntUserEmployeeInfoListPo> userEmployeeInfoListPo(EntUserEmployeeInfoListDo listDo);

    /**
     * 获取角色信息详情列表
     */
    List<EntUserDetailListPo> userDetailList(EntUserDetailListDo listDo);

    /**
     * 获取区域销售列表
     */
    List<EntUserInfo> saleListByAreaId(Long areaId);

    /**
     * 分页
     */
    Page<EntUserInfoPo> poPaging(Page<EntUserInfo> page, UserInfoDo userInfoDo);

    /**
     * 列表
     */
    List<EntUserInfoPo> poList(Wrapper<EntUserInfo> queryWrapper);
}
